<?php
class Helper_Uploadimg{
    public $basepath='';
//upload
	function upload($_FILES,$article_type='')
	{
      $download_dir =$this->basepath;
      $Erroe=0;
      $udfilesize=$_FILES["size"];   //文件大小 ；
                                      //上传路径
      $uploadfile_name= $_FILES["name"];
      $uploadfile = $article_type.md5(time().Helper_Util::getIp());
      
      //不允许上传已经上传过的文件
      if(file_exists($uploadfile)) $Erroe=12;
      
      $filetype=substr(strrchr($uploadfile_name,'.'),1);  //取得文件后缀,
      //文件后缀名 
      $limitypes=array( "GIF","PNG","JPG"); //限制的文件类型
      $len=count($limitypes);
      $filetype_noerror=0;
      foreach(array( "GIF","PNG","JPG") as $limitype){
         if(strcasecmp($filetype,$limitype)==0){
            $filetype_noerror=1;
            break;
         }
      }
      if($filetype_noerror==0){
        $Erroe=10;
      }
      //$uploadfile=$uploadfile.'.'.$filetype;
      if($Erroe==0){
        if (move_uploaded_file($_FILES["tmp_name"], $download_dir.'/'.$uploadfile.'.'.$filetype)) {
            //生成缩略图
            $this->smallimg($download_dir,$uploadfile,$filetype );
        } else {
            $Erroe=$_FILES['error'];
        }
      }
      
      switch($Erroe){
      case 0:
      $msg=   "上传成功\n"; break;
      case 1:
      $msg=   "上传失败\n上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值.\n"; break;
      case 2:
      $msg=   "上传失败\n上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值\n";    break;
      case 3:
      $msg=   "上传失败\n文件只有部分被上传\n";break;
      case 4:
      $msg=   "上传失败\n没有文件被上传\n";break;
      case 10:   
      $msg=   "上传失败\n限制的或未被支持的文件类型\n";  break; 
      case 12:   
      $msg=   "上传失败\n文件已经存在\n";  break;      
      }
      return array(
        'file'=>$uploadfile.'.'.$filetype,
        'error'=>$Erroe,
        'name'=>$_FILES['name'],
        'type'=>$_FILES['type'],
        'size'=>$_FILES['size'],
        'msg'=>$msg
      );
	}
	
	//生成指定大小,保持原图长宽比例的缩略图
	function smallimg($filedir,$filename,$filetype)
	{
	 //指定缩略图的高宽 
	  $dsth=160;
	  $dstw=115; 
	  //$filetype=strtolower(substr(strrchr($filename,'.'),1));  //取得文件后缀
	  //设置生成缩略图的保存路径
	  $srcfile=$filedir.'/'.$filename.'.'.$filetype;
	  $dstfile=$filedir.'/small/'.$filename.'.'.$filetype; 
	  //echo "src:".$srcfile."<br>dst:".$dstfile."<br>";
	  if($filetype=='jpg'){
	     $srcim=@imagecreatefromjpeg($srcfile); 
	  }elseif($filetype=='gif'){
	     $srcim=@imagecreatefromgif($srcfile);  
	  }elseif($filetype=='png'){
	     $srcim=@imagecreatefrompng($srcfile);
	  }else{
	     $errmsg="文件格式错误";
	    echo $errmsg;
	  }
	 
	  //1,先取得原图像的size
	   list($srcw, $srch)=getimagesize($srcfile);
	   
	  //2,取得对原图像按比例截取
	  if($srcw > $srch) $srcw=$dstw*$srch/$dsth;
	  else $srch=$dsth*$srcw/$dstw;
	  $dstim=imagecreatetruecolor($dstw,$dsth);
	  //$dstim=imagecreate($dstw,$dsth);
	  imagecolorallocate($dstim,255,255,255);
	  // 3,用此函数copy 并缩小
	   
	  imagecopyresized($dstim,$srcim,0,0,0,0,$dstw,$dsth,$srcw,$srch);  
	   
	  if($filetype=='jpg'){
	    if(imagejpeg ($dstim,$dstfile))  return true;
	  }elseif($filetype=='gif'){
	    if( imagegif ($dstim,$dstfile))  return true; 
	  }elseif($filetype=='png'){
	    if( imagepng ($dstim,$dstfile))  return true;
	  }
	  return false;
	}//end function createthumbnail_sizeratio
    
    function removefile($file){
        if(is_file($this->basepath.'/'.$file)){
            unlink($this->basepath.'/'.$file);
        }
        if(is_file($this->basepath.'/small/'.$file)){
            unlink($this->basepath.'/small/'.$file);
        }
    }
}